#ifndef VO_H
#define VO_H

#include <QtGui>
#include "ui_vo.h"
#include "ventanaimagen.h"
#include "infodialog.h"
#include "transLineal.h"
#include "setBrilloContraste.h"
#include "digitalizar.h"
#include "logaritmo.h"
#include "perfil.h"
#include "vecindad.h"
#include "seleccionmultiple.h"
#include "perfilresultado.h"
#include "cuantizar.h"
#include "ruidoVentana.h"
#include <iostream>
#include "filtroVentana.h"
#include "ventanaMovil.h"
#include "transGeometrica.h"
#include "zoomventana.h"
#include "rotarventana.h"

using namespace std;

class VO : public QMainWindow
{
	Q_OBJECT

private slots:
	//Archivo
	void open();
	void save();
	//Selección
	void nuevaDesdeSeleccion();
	//Edición
	void undo();
	//Imagen
	void toGrayPAL();
	void toGrayNTSC();
	void info();
	void histograma();
	void histogramaA();
	void perfil();
	void vecindad();

	//Transformaciones
	void transLineal();
	void setBrilloContraste();
	void ecualizar();
	void digitalizar();
	void cuantizar();
	void logaritmo();
	void exponencial();
	void espHisto();
	void negativo();

	//Comparar
	void diferencia();

	//Ver pixel
	void showMovido(QPoint punto, QRgb color);

	//Ruido
	void aplicarRuido();

	//Filtros
	void filtrar();
	void ventanaMovil();

	//transformaciones geometricas
	void espejoHorizontal();
	void espejoVertical();
	void transpuesta();
	void zoom();
	void rotar();
	void girar90();
	void girar180();
	void girar270();
public slots:
	void aplicarFiltro();



public:
	VO(QWidget *parent = 0);
	~VO();

private:
	Ui::VOClass ui;
	VentanaImagen * addImage(Imagen * imagen);
	void toGray(double, double, double);

	//Barra de herramientas
	QToolBar * toolbar;
	QAction *nueva;
	QAction *deshacer;
	int contador;

	//Ventana del editor de filtros
	FiltroVentana filtroVentana;

	void crearDialogo(QWidget *, const QString& titulo);
	void crearDialogo(QWidget *);
};

#endif // VO_H
